import java.util.*;

// 定义一个比较器，实现字典序比较
class LexicographicListComparator implements Comparator<List<Integer>> {
    @Override
    public int compare(List<Integer> list1, List<Integer> list2) {
        int size = Math.min(list1.size(), list2.size());

        for (int i = 0; i < size; i++) {
            int elementComparison = list1.get(i).compareTo(list2.get(i));
            if (elementComparison != 0) {
                return elementComparison;
            }
        }

        return Integer.compare(list1.size(), list2.size());
    }
}
public class BiteDay43 {
    private static List<List<Integer>> ans = new ArrayList<>();
    private static List<Integer> path = new ArrayList<>();
    private static void dfs(int cnt, int m, int n, int cur){
        if(cnt == 0 && m == 0){
            ans.add(new ArrayList<>(path));
            return;
        }
        for(int i = cur; i <= n; i++){
            path.add(i);
            dfs(cnt - 1, m - i, n, i+1);
            path.remove(path.size() - 1);
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        for(int i = 1; i <= n; i++){
            dfs(i, m, n, 1);
        }
        Collections.sort(ans, new LexicographicListComparator());
        for(List<Integer> e : ans){
            for(Integer k : e){
                System.out.print(k+" ");
            }
            System.out.println();
        }
//        for(int i = 0; i < ans.size(); i++){
//            for(int j = 0; j < ans.get(i).size(); j++){
//                if(j == ans.get(i).size() - 1){
//                    System.out.print(ans.get(i).get(j));
//                }else{
//                    System.out.print(ans.get(i).get(j)+" ");
//                }
//            }
//            if(i != ans.size() - 1){
//                System.out.print("<br/>");
//            }
//        }
    }
}
